import time
from multiprocessing import Pool, Process, Queue

# Queue（[maxsize]）: 两个进程以上的通信，建议用Queue
# 建立一个共享的队列(内部维护着数据的共享)，多个进程可以向队列里存/取数据。其中，参数是队列最大项数，省略则无限制。

def add_data(q: Queue):
    for i in range(6):
        q.put(f'数据{i}')
        time.sleep(0.3)


# 读取全局变量 lst
def read_data(q: Queue):
    while True:
        # q.get()也是一个阻塞函数，如果队列中没有取到数据，就一直阻塞
        value = q.get()
        print(value)


if __name__ == '__main__':

    # Queue 队列 ，

    # 多进程中 进程之间通信用 队列的方式，一个进程写数据到队列中，另一个进程从队列中读取数据
    q = Queue(100)
    p1 = Process(target=add_data, args=(q,)) # 往队列中存放数据的进程
    p2 = Process(target=read_data, args=(q,)) # 从队列中获取数据的进程

    p1.start()
    # p1.join()
    p2.start()

